using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace SMS.Framework
{

    public enum WindowType
    {
        DownloadWindow = 0,
        UploadWindow = 1,
        PosDataPackingWindow = 2,
        LaborManageWindow = 3
    }

    public interface IMdiWindow : IWindow
    {

        System.Windows.Forms.Form GetWindow();

        bool SetVisibility(bool visible);

        bool GetVisibility();

        void ExitApplication();

        void SetStatusBarInfo(User user, Store site, AppInfo appInfo);

        void SetCaption(string caption);
    }

    public interface IWindow
    {
        void ShowWindow();

        void CloseWindow();

        bool OnApplicationCommand(Object sender, string commandName, object[] commandParameters);

        bool Init();
    }

    public interface IMdiChildWindow : IWindow
    {
        bool CanClosed();

        bool IsInstanced();

        void Activate();
    }

    public interface ITrayWindow : IWindow
    {
        void ChangeIcon(TrayIconType iconType);

        void SetMenu(string name, string value, bool enable);

        void SetMenu(string name, string value);

        void SetMenu(string name, bool enable);

        void ShowPopUpMessage(string caption, string text, ToolTipIcon icon);
    }

    public enum TrayIconType
    {
        OffLine = 0,
        Online = 1,
        NewMessage = 2,
        Downloading = 3,
        Uploading = 4,
    }

    public interface IModelWindow : IWindow
    {
        Form GetInstanceWindow();
    }

    public interface IAboutWindow : IModelWindow
    {
        void ShowAboutInfo(AppInfo appInfo, Store site);
    }

    public interface ILoginWindow : IModelWindow
    {
        User Login(string id, string password);
    }

    public interface IConfigWindow : IModelWindow
    {
        void SetConfigInfo();

        void GetConfigInfo();
    }

    public interface ICommunicationWindow : IMdiChildWindow
    {
    }

    //public interface IPosDataPackingWindow : IMdiChildWindow
    //{
    //}
    public interface ISelectTemplateWindow : IMdiChildWindow
    {
    }
    public interface IMdiLaborWindow : IMdiChildWindow
    {
    }

}
